package com.xgk.boot.module.core.controller.order.vo;

import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;

/**
 * 订单主信息展示对象
 */
@Data
public class OrdersVO {
    /**
     * 主键ID
     */
    private Integer orderId;

    /**
     * 订单编号
     */
    private String orderCode;

    /**
     * 客户参考号
     */
    private String referenceNo;

    /**
     * 运单号
     */
    private String trackingNumber;

    /**
     * 客户ID
     */
    private Long customerId;

    /**
     * 客户代码
     */
    private String customerCode;

    /**
     * 平台代码
     */
    private String platform;

    /**
     * 订单类型：0:普通
     */
    private Integer orderType;

    /**
     * 创建类型:api,upload,hand
     */
    private String createType;

    /**
     * 国家简码
     */
    private String countryCode;

    /**
     * 物流产品代码
     */
    private String smCode;

    /**
     * 服务商渠道代码
     */
    private String spCode;

    /**
     * 运费估算
     */
    private BigDecimal shippingFeeEstimate;

    /**
     * 币种Code
     */
    private String currencyCode;

    /**
     * 物品内容描述（内装何物）
     */
    private String parcelContents;

    /**
     * 内件数量
     */
    private Integer parcelQuantity;

    /**
     * 订单重量
     */
    private Double oWeight;

    /**
     * 订单状态（0:已取消;1:草稿;2:已提交;3:已预报;99:已作废）
     */
    private Integer orderStatus;

    /**
     * 订单状态文本（示例：通过枚举转换）
     */
    private String orderStatusText;

    /**
     * 订单子状态（0-无异常,1-预报异常）
     */
    private Integer orderSubStatus;

    /**
     * 拦截状态（0:无;1:申请拦截;2:拦截中;3:拦截失败;4:已拦截）
     */
    private Integer interceptStatus;

    /**
     * 等待状态（0:无;1:物流处理）
     */
    private Integer orderWaitingStatus;

    /**
     * 计费状态（0:计费完成 1:待计费 2:计费失败）
     */
    private Integer orderChargeStatus;

    /**
     * 是否为手工上传跟踪号（0:否 1:是）
     */
    private Integer isUploadExpress;

    /**
     * 需要或允许重新预报（0:否 1:是）
     */
    private Integer isAnewExpress;

    /**
     * 同步服务商标志（0：未同步 1：已同步 2：同步失败）
     */
    private Integer syncServiceStatus;

    /**
     * 标签打印次数
     */
    private Integer printQuantity;

    /**
     * 取消时间
     */
    private Date cancelTime;

    /**
     * 物流时间
     */
    private Date logisticsTime;

    /**
     * 验证时间
     */
    private Date verifyTime;

    /**
     * 付款时间
     */
    private Date orderPaydate;

    /**
     * 备注
     */
    private String remark;

    /**
     * 操作说明
     */
    private String operatorNote;

    /**
     * 物流异常信息
     */
    private String logisticsErr;

    /**
     * 是否为ODA件（1:是 0:否）
     */
    private Integer isOda;

    /**
     * ODA类型（0:oda 1:偏远 2:超偏远）
     */
    private Integer odaType;

    /**
     * 是否购买签名服务（0:否 1:普通签名 2:成人签名）
     */
    private Integer isSignature;

    /**
     * 是否购买保险服务（1:是 0:否）
     */
    private Integer isInsurance;

    /**
     * 投保金额
     */
    private BigDecimal insuranceValue;

    /**
     * 物品申报价值
     */
    private BigDecimal parcelDeclaredValue;

    /**
     * 是否为住宅地址（1:是，0:否）
     */
    private Integer isResidential;

    /**
     * 地址验证标识（0:未检测 1:已检测 2:失败）
     */
    private Integer validateAddressSign;

    /**
     * 是否一票多件（0:不是 1:是）
     */
    private Integer isMoreBox;

    /**
     * PO代码
     */
    private String poCode;

    /**
     * VAT代码
     */
    private String vatCode;

    /**
     * 是否为FBA地址（0否 1是）
     */
    private Integer isFbaAddress;

    /**
     * 订单同步过程中的异常信息
     */
    private String syncInfo;

    /**
     * 用户ID
     */
    private Long userId;

    /**
     * 标签回调地址
     */
    private String labelCallbackUrl;

    /**
     * 地址类型（0-商业地址 1-住宅地址）
     */
    private Integer orderAddressType;

    /**
     * 亚马逊地址代码
     */
    private String warehouseCode;

    /**
     * 服务商类型
     */
    private Integer spType;

    /**
     * FBA地址代码
     */
    private String fbaCode;

    /**
     * 标签打印状态
     */
    private Integer labelPrint;

    /**
     * 产品SKU
     */
    private String productSku;

    /**
     * 是否为退货订单（0不是，1是退货订单）
     */
    private Integer isReturn;

    /**
     * 支付状态（0未支付 1支付中 2已支付）
     */
    private Integer payStatus;

    /**
     * 面单类型（PDF/ZPL）
     */
    private String labelFormat;

    // ---------- 可选扩展字段 ----------
    /**
     * 创建时间（从BaseDO继承，根据实际需求添加）
     */
    private LocalDateTime createTime;

    /**
     * 更新时间（从BaseDO继承，根据实际需求添加）
     */
    private LocalDateTime updateTime;
}